package liu.per.jvms;

/**
 * Created by liuj on 2015/4/19.
 */
@Result("在1.6中，两个都是false，因为str是由StringBuilder创建的对象，在堆上，而intern返回的是在方法区上字符串常量池的应用" +
        "在1.7中，第一个为true，第二个为false" +
        "1.7中intern方法对首次遇到的常量，常量池只会记录它在堆上的应用，因此第一个为true" +
        "由于java已经不是第一次出现了，因此为false，也就是说，第二次出现时，就安静软件返回也将是false" +
        "所以添加str3的测试时，返回的是false")
public class RuntimeConstantPoolOOM2 {

    public static void main(String[] args) {
        String str1 = new StringBuilder("就安静").append("软件").toString();
        System.out.println(str1.intern() == str1);

        String str2 = new StringBuilder("ja").append("va").toString();
        System.out.println(str2.intern() == str2);

//        String str3 = new StringBuilder("就安静").append("软件").toString();
//        System.out.println(str3.intern() == str3);
    }

}
